/*
 * Simon.h
 *
 *  Created on: 12-08-2013
 *      Author: Krzychu
 */

#ifndef SIMON_H_
#define SIMON_H_

#include "IAlgorithm.h"
#include "../Structures/List.h"

class Simon: public IAlgorithm
{
public:
	Simon();
	virtual ~Simon();
	virtual searchResult execute(std::string text, std::string pattern);
	virtual std::string getName();
protected:
	int getTransition(std::string pattern, int p, List** L, char c);
	void setTransition(int p, int q, List** L);
private:
	int preSimon(std::string pattern,  List** L);
};

#endif /* SIMON_H_ */
